function x = ThomasAlgorithm( A, B )
N = size(A, 1);
x = zeros(N, 1);

a = zeros(N, 1);
b = zeros(N, 1);

a(1) = -A(1, 2) / A(1, 1);
b(1) = B(1) / A(1, 1);
for i = 2 : N - 1
    ai = A(i, i - 1);
    bi = A(i, i);
    ci = A(i, i + 1);
    di = B(i);
    a(i) = -ci / (ai * a(i - 1) + bi);
    b(i) = (di - ai * b(i - 1)) / (ai * a(i - 1) + bi);
end;
a(N) = 0;
b(N) = (B(N) - A(N, N - 1) * b(N - 1)) / (A(N, N - 1) * a(N - 1) + A(N, N));

x(N) = b(N);
i = N - 1;
while i > 1
    x(i) = a(i) * x(i + 1) + b(i);
    i = i - 1;
end;

end

